package com.daz.common.component.util;

import com.daz.common.component.constant.enums.ResponseEnum;
import com.daz.common.component.entity.ResponseVO;

/**
 * @description 返回结果工具类
 * @author dingazheng
 * @since 2024/06/29
 */
public class ResultUtil {
    /**
     * 成功：返回值结果不包含数据
     */
    public static ResponseVO success() {
        return new ResponseVO(ResponseEnum.SUCCESS);
    }

    /**
     * 成功：返回结果包含数据
     */
    public static <T> ResponseVO<T> success(T data) {
        return new ResponseVO(data);
    }

    /**
     * 成功：返回结果不包含数据，自定义成功消息
     */
    public static ResponseVO success(String message) {
        return new ResponseVO(ResponseEnum.SUCCESS.getCode(), message);
    }

    /**
     * 成功：返回结果包含数据，自定义成功的消息
     */
    public static <T> ResponseVO<T> success(String message, T data) {
        return new ResponseVO(ResponseEnum.SUCCESS.getCode(), message, data);
    }

    /**
     * 失败：默认是500，服务器错误
     */
    public static ResponseVO fail() {
        return new ResponseVO(ResponseEnum.FAILURE);
    }

    /**
     * 失败：传入定义的失败枚举
     */
    public static ResponseVO fail(ResponseEnum resultEnum) {
        return new ResponseVO(resultEnum);
    }

    /**
     * 失败：自定义失败的消息
     */
    public static ResponseVO fail(String message) {
        return new ResponseVO(ResponseEnum.FAILURE.getCode(), message);
    }

    /**
     * 失败：自定义失败码和消息
     */
    public static ResponseVO fail(Integer code, String message) {
        return new ResponseVO(code, message);
    }
}
